package com.eastdigit.system.service;

import com.eastdigit.system.model.IDepartment;
import java.util.List;

public interface IDepartmentService<T extends IDepartment> {

    /**
     * 获取所有的部门
     * 
     * @return
     */
    List<T> queryAllDepartment();

    /**
     * 通过deptId查找对应的部门
     * 
     * @param deptId
     * @return
     */
    T queryDepartment(String deptId);

    /**
     * 通过deptId查找所有祖先，按照祖先的层级排序
     * 
     * @param deptId
     * @return
     */
    List<T> queryAncestorDepartment(String deptId);

    /**
     * 获取某部门及其所有子孙节点
     * 
     * @param parentDeptId
     * @return
     */
    List<T> queryDescendantDepartmentAndSelf(String parentDeptId);

    /**
     * 获取某部门的所有子孙节点，不包括该部门
     * 
     * @param parentDeptId
     * @return
     */
    List<T> queryDescendantDepartment(String parentDeptId);

    /**
     * 获取某部门的子节点
     * 
     * @param parentDeptId
     * @return
     */
    List<T> queryChildDepartment(String parentDeptId);

}
